#include "TableauDynamique.h"
#include "Element.h"
#include <assert.h>

void initialiser(Tab_Dynamique * t, int taille)
{
	t->capacite = taille;
	t->ad =(Element*)malloc(sizeof(Element));
	t->derniere_position = 0;
}


void testament(Tab_Dynamique *t)
{
	if(t->ad !=0){
		free (t->ad); 
		t->ad = 0;
		t->capacite = 0;
	}
}

void ajouteElement(Tab_Dynamique *t, Element e){
	int i;
	Element *temp;
	if((*t).derniere_position ==(*t).capacite)
	{ 
		temp = (*t).ad;
		
		(*t).ad = (Element*)malloc(2*(*t).capacite*sizeof(Element));
		
		for(i=0;i< ((*t).capacite);i++){ 
			(*t).ad[i]=temp[i];
		}
		
		(*t).capacite = 2*(*t).capacite;
		free(temp);
	}
	(*t).ad[(*t).derniere_position]=e;
	(*t). derniere_position++;

}

Element valeurIemeElementTabDyn(const Tab_Dynamique *t, unsigned int i){
	assert(i!=0);
	return(t->ad[i]);
}


void afficheTabDyn(const Tab_Dynamique *t){
	int i;
	for(i=0;i<=(t->derniere_position);i++)
		afficheElement(t->ad[i]);
}

void supprimeDernierElementTabDyn( Tab_Dynamique *t){
	t->ad[t->derniere_position-1]=0;
	t->derniere_position=t->derniere_position-1;
}

void modifieValeurIemeElementTabDyn(Tab_Dynamique *t, Element e, unsigned int i){
	t->ad[i]=e;
}

int rechercheElementTabDyn(const Tab_Dynamique *t, Element e ){
	int i;
	for(i=0; i< t->derniere_position ;i++){
		if(t->ad[i]==e)
			return i;
	}
	return -1;
}

